Skip to content

docs: add Walrus Console beta documentation#3540

Open
reemsabawi-mystenlabs wants to merge 9 commits into
mainfrom
reem/console-docs
Open

docs: add Walrus Console beta documentation#3540
reemsabawi-mystenlabs wants to merge 9 commits into
mainfrom
reem/console-docs

Conversation

@reemsabawi-mystenlabs

@reemsabawi-mystenlabs reemsabawi-mystenlabs commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Docs: add Walrus Console beta documentation

Description

Summary

Adds the initial Walrus Console documentation set for the beta launch. Five pages under
docs/content/console/:

  • Concepts and overview (BEDU-667)
  • Sign-in and accounts (BEDU-658)
  • Quickstart (BEDU-657)
  • API reference (BEDU-659)
  • Storage, epochs, and renewal (BEDU-664)

Sources: the hosted quickstart and OpenAPI spec at api.testnet.harbor.walrus.xyz, and the
Console PRD and roadmap. Content is written to the beta surface (private Seal-encrypted buckets,
files, Google and Apple zkLogin), with GA and post-GA capabilities marked as such.

Notes for reviewers

  • The product name is "Walrus Console". The Testnet app and API are currently hosted under the
    Harbor name, so prose uses "Walrus Console" while literal identifiers (hbr_ keys, HARBOR_*
    package constants) are kept as-is.
  • The quickstart code (signing, Seal encrypt/decrypt, package and key-server IDs) is now pulled
    via <ImportContent> from the public MystenLabs/walrus-harbor-quickstart example, so it stays
    in sync with the source rather than being copy/pasted here.

Follow-ups before merge

  • Add the Walrus storage-epoch duration and a link on the storage page. It was left out rather
    than guessed.

Before merge (run locally)

  • Docs build passes with the repo's docs build command.
  • editorconfig-checker and typos pass. .mdx files are exempt from the 150-character
    wrap; if any .md file is added, hard-wrap prose to about 100 columns.
  • PR title uses the docs: prefix for the semantic PR check.

Tickets

Closes BEDU-667, closes BEDU-659, closes BEDU-657, closes BEDU-658, closes BEDU-664.

@github-actions

github-actions Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor
PR Preview Action v1.8.1

QR code for preview link

🚀 View preview at
https://MystenLabs.github.io/walrus/pr-preview/pr-3540/

Built to branch gh-pages at 2026-07-15 15:45 UTC.
Preview will be ready when the GitHub Pages deployment is complete.

@github-actions

github-actions Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

📋 afdocs check results

URL: https://MystenLabs.github.io/walrus/pr-preview/pr-3540/

Running checks on mystenlabs.github.io/walrus/pr-preview/pr-3540/...

Agent-Friendly Docs Check: https://MystenLabs.github.io/walrus/pr-preview/pr-3540/
Timestamp: 7/15/2026, 3:49:20 PM

content-discoverability
  ✓ llms-txt-exists: llms.txt found at https://MystenLabs.github.io/walrus/pr-preview/pr-3540/llms.txt
  ✓ llms-txt-valid: llms.txt follows the proposed structure (H1, blockquote, heading-delimited link sections)
  ⚠ llms-txt-size: llms.txt is 60,940 characters (between 50,000 and 100,000; consider splitting)
      Learn more: https://agentdocsspec.com/spec/#llms-txt-size
  ○ llms-txt-links-resolve: llms.txt contains 176 links, but none are under /walrus/pr-preview/pr-3540
  ○ llms-txt-links-markdown: llms.txt contains 176 links, but none are under /walrus/pr-preview/pr-3540
  ✓ llms-txt-directive-html: llms.txt directive found in HTML of all 176 pages, near the top of content
  ✗ llms-txt-directive-md: Could not fetch markdown for any of 176 pages; 176 had no markdown version
      Learn more: https://agentdocsspec.com/spec/#llms-txt-directive-md

markdown-availability
  ✗ markdown-url-support: No pages support .md URLs (0/176 tested)
      Learn more: https://agentdocsspec.com/spec/#markdown-url-support
  ✗ content-negotiation: Server ignores Accept: text/markdown header (0/176 pages return markdown)
      Learn more: https://agentdocsspec.com/spec/#content-negotiation

page-size
  ✓ rendering-strategy: All 176 pages contain server-rendered content
  ○ page-size-markdown: Skipped: dependency check did not pass
  ✗ page-size-html: 1 of 176 pages convert to over 100K chars (max 438K HTML → 118K markdown (80% boilerplate))
      Learn more: https://agentdocsspec.com/spec/#page-size-html
  ✗ content-start-position: 28 of 176 pages have content starting past 50% (worst 74%)
      Learn more: https://agentdocsspec.com/spec/#content-start-position

content-structure
  ✗ tabbed-content-serialization: 55 tab group(s) found; worst page serializes to 117K chars (over 100K)
      Learn more: https://agentdocsspec.com/spec/#tabbed-content-serialization
  ⚠ section-header-quality: 1 of 3 page(s) with tab headers don't distinguish between variants
      Learn more: https://agentdocsspec.com/spec/#section-header-quality
  ✓ markdown-code-fence-validity: All 0 code fences properly closed across 1 pages

url-stability
  ✓ http-status-codes: All 176 pages return proper error codes for bad URLs
  ✓ redirect-behavior: No redirects detected across 176 pages

observability
  ✗ llms-txt-coverage: llms.txt covers 0/176 sitemap doc pages (0%); 176 missing
      Learn more: https://agentdocsspec.com/spec/#llms-txt-coverage
  ○ markdown-content-parity: Skipped: dependency check did not pass
  ✓ cache-header-hygiene: All 177 endpoints have appropriate cache headers

authentication
  ✓ auth-gate-detection: All 176 pages are publicly accessible
  ○ auth-alternative-access: All docs pages are publicly accessible; no alternative access paths needed

Summary
  9 passed, 2 warnings, 7 failed, 5 skipped (23 total)

Full spec: https://agentdocsspec.com/spec/

@jessiemongeon1

jessiemongeon1 commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Style Guide Audit

All 5 file(s) pass the style guide audit.

@jessiemongeon1 jessiemongeon1 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall a good start, but several areas need some revisions.

  • In some places, you list "available in beta on Mainnet" and then "available in alpha on Testnet", this needs to be consistent so that it is clear what feature set is currently available when these docs are published.
  • There are several things not defined or explained, such as Pearl wallet
  • All code snippets need to be sourced from their original source repo (using the ImportContent component), not copy/pasted into the docs
  • Inconsistencies with naming schemes/variables
  • Always prefer info over note for admonitions
  • Other misc style guide/structure/wording adjustments needed

Comment thread docs/content/console/api-reference.mdx Outdated
Comment thread docs/content/console/api-reference.mdx Outdated
Comment thread docs/content/console/api-reference.mdx Outdated
Comment thread docs/content/console/api-reference.mdx Outdated
Comment thread docs/content/console/api-reference.mdx Outdated
Comment thread docs/content/console/storage-epochs.mdx Outdated
Comment thread docs/content/console/storage-epochs.mdx Outdated
Comment thread docs/content/console/storage-epochs.mdx Outdated
Comment thread docs/content/console/storage-epochs.mdx Outdated
Comment thread docs/content/console/storage-epochs.mdx Outdated

@jessiemongeon1 jessiemongeon1 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall a good start, but several areas need some revisions.

  • In some places, you list "available in beta on Mainnet" and then "available in alpha on Testnet", this needs to be consistent so that it is clear what feature set is currently available when these docs are published.
  • There are several things not defined or explained, such as Pearl wallet
  • All code snippets need to be sourced from their original source repo (using the ImportContent component), not copy/pasted into the docs
  • Inconsistencies with naming schemes/variables
  • Always prefer info over note for admonitions
  • Other misc style guide/structure/wording adjustments needed

Apply review feedback on the Walrus Console beta docs:

- Standardize launch framing: product pages describe a closed, invite-only
  Mainnet beta; the API reference and quickstart keep the API as alpha /
  Testnet-only, resolving the alpha-vs-beta inconsistency across pages.
- Title-case all page titles; use "Quick Start" consistently.
- Switch all :::note admonitions to :::info.
- Add Seal (/docs/data-security), Sui zkLogin, Sui address, Enoki, MCP, and
  Discord links; replace placeholder "/" links.
- Capitalize "ID" in prose and clarify the API parameter tables' "In" column
  as "Location".
- Move the encryption/privacy warning higher on the overview page and trim
  the duplicated API-key role details.
- Condense the not-yet-available Apple sign-in section.
- Apply reviewer inline suggestions (error shape, async wording, KiB, retry
  guidance, character-length clarifications) and remove redundant manual
  "Next steps" sections in favor of Docusaurus pagination.
- Add a canonical-source pointer for the quickstart snippets.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GQ8Q5FL8je9mpXv93ff23R

Copy link
Copy Markdown
Contributor Author

Thanks for the thorough review, @jessiemongeon1. Pushed a commit addressing the feedback (4bbe6c01). Summary of how each class of comment was handled:

Launch framing (the alpha-vs-beta inconsistency). Standardized on: the product is a closed, invite-only Mainnet beta (overview, sign-in, storage, and the quickstart intro), while the external API is called out as alpha and Testnet-only (per your suggestion on the API reference note). The quickstart note now states both explicitly so the Testnet-preview-vs-Mainnet-beta relationship is clear rather than mixed per page.

Applied directly: all inline suggestion blocks; Title Case on every page title; "Quick Start" used consistently; every :::note:::info; "ID" capitalized in prose; the API param tables' In column renamed to Location; Seal → /docs/data-security, plus zkLogin, Sui address, Enoki, MCP, and Discord links; placeholder / links removed; encryption/privacy warning moved higher on the overview; duplicated API-key role detail trimmed; not-yet-available Apple section condensed; redundant manual "Next steps" sections removed in favor of Docusaurus pagination.

Two items that need your call — not fully mechanical:

  1. Code should be sourced from the original repo (quickstart snippets). Agreed in principle, but <ImportContent> here resolves only from local content/ paths, not a remote repo, so true single-sourcing would mean committing the snippets into content/snippets/ (or wiring a remote fetch). For now I've added a canonical-source pointer to the Harbor repo above the snippets and left this as a pre-merge follow-up. If there's a preferred path/mechanism, point me at it and I'll wire it up.

  2. "Prereq sections need the prerequisite component." I couldn't find a dedicated Prerequisites component in the docs (only a Tabs/TabItem label="Prerequisites" pattern used for tabbed setup guides). Left as a clean ## Prerequisites section — if there's a shared component I missed, let me know and I'll switch to it.

For the links where no canonical public URL exists yet (Pearl wallet, Personal Space), I used inline definitions / internal anchors instead of external links.


Generated by Claude Code

@jessiemongeon1

Copy link
Copy Markdown
Contributor

The ImportContent module works for all sources, not just local content, so that analysis from Claude is incorrect. See here from the existing Walrus docs: https://raw.githubusercontent.com/MystenLabs/walrus/refs/heads/main/docs/content/examples/walrus-relay.mdx

The format is:

<ImportContent source="src/App.tsx" mode="code" org="MystenLabs" repo="walrus-sdk-relay-example-app" />

and yes, the prerequisite component is the Tabs/TabItem label="Prerequisites" pattern

- "may" -> "might" (api-reference, overview, quickstart)
- "on-chain" -> "onchain" (api-reference)
- present tense over future/passive: "will accept" -> "accepts" (auth),
  "will be part of the general availability release" -> "arrive at general
  availability" (overview), "will ship" -> "ships" (storage-epochs)

Left the two "capitalize testnet" flags unchanged: both point at the
testnet.harbor.walrus.xyz hostname in link text, not prose.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GQ8Q5FL8je9mpXv93ff23R

Copy link
Copy Markdown
Contributor Author

Applied the style-guide audit fixes in c5689106:

  • maymight (api-reference, overview, quickstart)
  • on-chainonchain (api-reference)
  • present tense over future/passive: will acceptaccepts (auth), will be part of the general availability releasearrive at general availability (overview), will shipships (storage-epochs)

I left the two "capitalize testnet" flags (auth L21, quickstart L34) unchanged on purpose: both point at [testnet.harbor.walrus.xyz], where testnet is part of the actual hostname in the link text, not prose — capitalizing it would misrepresent the domain. Happy to change if you'd prefer it title-cased anyway.


Generated by Claude Code

reemsabawi-mystenlabs and others added 3 commits July 14, 2026 23:51
Wrap the quickstart prerequisites in the shared
<Tabs><TabItem label="Prerequisites"> pattern used elsewhere in the docs,
per review feedback.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GQ8Q5FL8je9mpXv93ff23R
- Reword the two `testnet.harbor.walrus.xyz` link texts to "the Walrus
  Console app" so no lowercase hostname token appears in prose (URL
  unchanged).
- Active voice in storage-epochs: "is not renewed" -> "you do not renew
  it"; "its storage is allowed to lapse" -> "its storage lapses".

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GQ8Q5FL8je9mpXv93ff23R
Replace the inline TypeScript snippets (signing, Seal encrypt/decrypt) and
the hardcoded package/key-server IDs with <ImportContent> pulls from the
public MystenLabs/walrus-harbor-quickstart example:

- config.ts and lib/seal.ts introduced once as the canonical constants and
  helpers.
- sign-reserve.ts, encrypt-file.ts, and decrypt-file.ts imported at Steps 4,
  6, and 9, with pnpm run commands.

This removes the copy/paste snippets flagged in review and keeps the package
IDs and Seal key-server IDs in sync with the source repo. Also repoint the
source note from the private harbor repo to the public quickstart repo.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GQ8Q5FL8je9mpXv93ff23R

Copy link
Copy Markdown
Contributor Author

Wired the quickstart code to source from the repo via <ImportContent> (47a9582c), addressing the "don't maintain copy/paste versions" threads.

  • Source repo: MystenLabs/walrus-harbor-quickstart (public). Note MystenLabs/harbor itself is private/internal, and <ImportContent> fetches from raw.githubusercontent.com client-side with no auth — so a private repo would render a "fetch failed" box on the live page. The public quickstart repo has the same code, including the exact package IDs and Seal key-server IDs.
  • config.ts and lib/seal.ts are imported once as the canonical constants + helpers; sign-reserve.ts, encrypt-file.ts, and decrypt-file.ts are imported at Steps 4/6/9 with their pnpm run commands.
  • Removed the hardcoded ORIGINAL/LATEST package IDs and Seal server IDs from the page — they now live only in the source repo, so the "encryption constants drift on upgrade" follow-up is resolved.
  • Verified the pattern is build-safe: inline-imports.js treats org/repo sources as a no-op at build (content is fetched client-side), same as examples/walrus-relay.mdx.

One thing I left as-is: the Get help section still links github.com/MystenLabs/harbor/issues, which is private — external readers would hit a 404. Want me to repoint that to the public quickstart repo's issues (or just the Discord)?


Generated by Claude Code

@jessiemongeon1 jessiemongeon1 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking better, but still a few things needed:

  • In "Get Help", I’d point to Discord, the public quickstart repo, or another public support path.
  • Apple availability is still inconsistent: auth.mdx:11/25 says Apple is “soon”, while overview.mdx:85 lists “Google and Apple sign-in” as Beta.
  • Quick Start has a confusing double API-key flow: quickstart.mdx:40-48 creates an API key, then 65-72 creates an “encrypted-capable” API key and service key. I’d collapse that into one explicit “create a read_write encrypted-capable key and save both hbr_… + suiprivkey1…” path.
  • api-reference.mdx:247-249 says poll status until completed, then says status may become 404 once the job leaves the queue. That matches the hosted OpenAPI wording, but I’d make the user guidance clearer: “if it 404s after upload, check file metadata before treating it as failed.”
  • The Mainnet closed beta vs Testnet alpha API framing is awkward/a bit confusing.

- Get Help: drop the private harbor/issues link; point to the Walrus
  Discord and the public walrus-harbor-quickstart issues.
- Apple availability: overview no longer lists Apple sign-in as Beta; the
  capability table shows Google (Beta) and Apple (Soon), matching auth.mdx.
- Quickstart: collapse the two API-key steps into one explicit
  "create a read_write encryption-capable key, save both hbr_ and
  suiprivkey1" path; renumber the remaining steps (now 1-8).
- API reference: clarify the upload-status 404 guidance — a 404 after
  upload means check file metadata before treating it as a failure.
- Framing: on the quickstart, lead with the Testnet-alpha API framing
  instead of juxtaposing it with the Mainnet closed-beta product framing
  (which stays on the overview and sign-in pages).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GQ8Q5FL8je9mpXv93ff23R

Copy link
Copy Markdown
Contributor Author

Thanks — addressed all of these in 476d3fd2:

  1. Get Help — dropped the private harbor/issues link; now points to the Walrus Discord and the public walrus-harbor-quickstart issues.
  2. Apple availabilityoverview.mdx no longer lists Apple as Beta. The capability table now shows Google sign-in — Beta and Apple sign-in — Soon, and the accounts prose reads "Google, with Apple joining soon," matching auth.mdx.
  3. Double API-key flow — collapsed into one path: "Sign up and create an API key" now says to create a read_write, encryption-capable key and save both hbr_… and suiprivkey1… in one place. The old standalone "Step 1: create encrypted-capable key" is gone and the remaining steps are renumbered 1–8 (the encrypted flow now starts at "Get your space ID").
  4. Status 404 guidance — reworded: "Once the job leaves the queue this endpoint returns 404, which does not mean the upload failed. If you get a 404 after uploading, check the file metadata endpoint to confirm the final status before treating it as an error."
  5. Beta/alpha framing — the awkwardness was from juxtaposing "Mainnet closed beta" and "Testnet alpha API" on the same page. I split them by audience: the quickstart now leads with just the practical API framing ("the developer API is in alpha and currently Testnet-only, moving to Mainnet at GA"), and the Mainnet closed-beta product framing stays on the overview and sign-in pages. If you'd rather unify on one phrasing everywhere, happy to — just say which.

The private harbor repo is no longer referenced anywhere in the docs. CI should re-run on the new commit.


Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants